#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int readContent()
{
    // 使用 popen 执行命令并打开一个管道
    FILE* pipe = popen("gsettings get org.gnome.desktop.interface text-scaling-factor", "r");
    if (!pipe) 
        return -1;
    // 读取输出内容
    char buffer[6];
    string result = "";
    while (!feof(pipe))
        if (fgets(buffer, 6, pipe)!= NULL) 
            result += buffer;
    // 关闭管道
    pclose(pipe);
    // 去除字符串中的换行符
    if (!result.empty() && result.back() == '\n') 
        result.pop_back();
    // 将字符串转换为浮点数
    float value;
    stringstream ss(result);
    if (!(ss >> value))
        return -1;
    return value*100;
}

int main()
{
    // 读取当前缩放百分比
    int num = readContent();
    if (num == -1)
        cout << "缩放获取失败!" << endl;
    else
    {
        // 清空屏幕
        system("clear");
        cout << "当前系统缩放大小:" <<  num <<  "%" << endl;
    }

    // 获取需要设置的缩放百分比
    cout << "请输入将要对系统进行设置的缩放大小:";
    cin >> num;

    // 设置序号缩放的百分比
    string toSet = 
        "gsettings set org.gnome.desktop.interface text-scaling-factor " + 
        to_string((float)((float)num/100.0f)) + 
        " > /dev/null 2>&1";
    system(toSet.c_str());

    return 0;
}